The present invention relates to a data transfer method and a system in a computer network to which are connected a number of computers, more specifically to a data transfer method of stream data continuous in time series and a system for it.
With improvement of computer capability and generalization of connection to network of computers in recent years, there is a growing request for real time transfer of stream data through computer network. Stream data here means data continuous in time series such as image, sound, etc. This stream data is naturally incorporated in packets and transferred through a network. Here this data is called stream data regardless whether the data is handled in units of prescribed number of groups of data or handled in disregard of such units of group.
FIG. 14 shows an example of conventional stream data transfer system. This system is composed of a server 500 on the side providing data and a client 508 on the side receiving the supply of data, and the network 507 intervenes between the two. A conventional system will be further explained hereafter based on FIG. 14 together with its procedure.
The server 500 is constructed as described below. Namely, as explained hereafter, when a request for start of transfer of stream data is given from the client 508 to the sever, this request is delivered to the start request processing means 516 through the packet receiving means 501, and this start request processing means 516 starts the rate controlling means 505. This rate controlling means 505 reads out stream data from the storing device 503 such as hard disc, etc., and stores it in the transmission buffer 504 temporarily.
A prescribed send rate is set in advance in said rate controlling means 505. This send rate is determined according to the reproduction rate of the client 508 and the capacity available for transfer of the network. The stream data stored in the transmission buffer 504 is read out at said prescribed send rate based on the control of the rate controlling means 505 and transferred to the packet transmitting means 502, and the packet transmitting means 502 sends out this stream data to the network 507 by incorporating it in packets.
On the other hand, the client 508 is constructed as described below. Namely, the data packets received from the network 507 are received by the packet receiving means 509, and the packets are disassembled here to be stored on the receiving buffer 511 one after another. The data reproducing means 512 reads out the data stored on the receiving buffer 511 as above sequentially at prescribed reproducing ate and delivers it to a display unit.
To control the start of transfer, a transfer start requesting means 517 is provided on the client 508 side, and this transfer start requesting means 517 issues a request for start of transfer according to the operator""s instructions. This request for start of transfer is delivered to the packet transmitting means 510, incorporated into transfer start request packets here, and transferred to the server 500 through the network 507. As a result, the start request processing means 516 of the server 500 starts the rate controlling means 505 to start data transfer as described above.
Such procedure is repeated for the transfer of stream data between the server and the client. However, a computer network generally produces a certain amount of packet loss depending on the state of the network concerned, while packet loss is produced in case of occurrence of an overflow of the receiving buffer due to shortage of processing capacity of the client""s computer, or fluctuation of reproducing ate of stream data, etc.
Therefore, also on said conventional system, an arrangement is made for compensation in such case of data loss.
Namely, the loss rate reporting means 513 of the client 508 constantly monitors the receiving buffer 511 and, in case of occurrence of any data loss, reports data loss rate to the packet transmitting means. The packet transmitting means 510 prepares a rate change request packet including an address of the server 500, an identifier to the effect that it is a send rate change request packet, and said loss rate, and then transmits the packet to the network.
The rate change request packet sent out this way is received by the packet receiving means 501 of the server 500, is identified as a rate change request packet here, and then is delivered to the rate changing means 506. This rate changing means 506 is provided, in the form of a table, with send rates corresponding the loss rate on said client 508 contained in said rate change request packet for example, and the rate changer 506 determines a new send rate by referring to this table, and transfers that send rate to the rate controlling means 505. Upon receipt of this transfer, the rate controlling means 505 reads out the stream data from the transmission buffer 504 by lowering (or raising) send rate and delivers it to the packet transmitting means 502.
However, in such conventional stream data transfer system, the send rate from the server 500 is lowered only after any loss of data is detected by the client 508 as described above. Therefore there is no way to reproduce any data once lost. In addition, the images fluctuates in case any data partly lost is reproduced.
FIG. 15 shows a method to transfer data other than stream data such as text data, for example, from the server 500 to the client 508.
Namely, each time when data xe2x80x9cDataxe2x80x9d in units of prescribed size is transferred from the server 500 to the client 508, an acknowledgement signal xe2x80x9cAckxe2x80x9d is returned from the client 508 to the server 500 and, upon receipt of this acknowledgement signal xe2x80x9cAckxe2x80x9d, the server sends out a new data xe2x80x9cDataxe2x80x9d.
According to this method, the client 508 does not return the acknowledgement signal xe2x80x9cAckxe2x80x9d when it received a data with loss, making it impossible for the server to send out the next xe2x80x9cDataxe2x80x9d. In this state, a shortage of data is produced on the receiving buffer 511 because the next data is not transferred until a prescribed time To elapses, for example. As a result, the image stops or fluctuates.
The object of the present invention, proposed in view of said defects of the conventional stream data transfer system, is to provide a more reliable stream data transfer method and a system, by lowering the send rate from the server before any loss of data is produced on the buffer of the client. Another object of the present invention is to provide a stream data transfer method and a system that transmits the lost data again even there is data is lost in the buffer of the client.
Yet another object of the present invention is to provide a stream data transfer method and its system, capable of effectively achieving said object, even in a multicast transfer system for transferring one same data to a plural number of clients simultaneously from the server.
The present invention adopts the means described below to achieve said objects. First, the stream data transfer system of the present invention comprises a server 400 and a client 470 as described below. In said server 400 the stream data read out from the storing means (storing device 403 and transmission buffer 404 in FIG. 1) at prescribed rate based on the control of the rate controlling means 405 are incorporated into data packets at the packet transmitting means 402. Next, the packets are transmitted to the client 470 through the network 300. The packet receiving means 401 receives request from the client 470.
Moreover, said client 470 receives, with the packet receiving means 410, the stream data sent out at prescribed rate from said server 400 through the network 300, stores it once on the receiving buffer 412 and reproduces it, and sends out necessary instruction to said server 400 from the packet transmitting means 411.
In said system, the present invention makes a request for change of rate from the client 470 in correspondence to the state of vacancy of said receiving buffer 412, and changes the send rate on the server 400 based on that request for change of rate.
To be concrete, a rate change requesting means 413 is provided on the client 470 side, to monitor the vacant capacity of the receiving buffer 412, and make a request for change of rate conformable to that vacant capacity. On the other hand, a rate change request inhibiting means 416 is provided on the server 400, to renew the send rate set on said rate controlling means 405, in response to the request for change of rate issued by the client 470 as described above.
This prevents any overflow of stream data from the receiving buffer 412.
Furthermore, based on the re-transfer request issued from the client 470 in correspondence to the loss of stream data received by said packet receiving means 410, the storing means on the server 400 sends out data corresponding to the lost data concerned.
To be concrete, a re-transfer requesting means 414 is provided on the client 470, to monitor loss of the data received by said packet receiving means 410, and make a request for re-transfer of the data corresponding to the lost data concerned. On the other hand, a re-transfer controlling means 407 is provided on the server 400, to perform re-transmission of the stream data corresponding to the lost data.
This makes it possible to compensate for the loss in case of occurrence of any data loss.
The present invention can be used independently with a construction necessary for said change of rate, and can be used independently with a construction for re-transfer, and can also be realized with a construction combining said 2 different types of processing.
By the way, in the case where said method is directly applied to a multicast transfer system capable of transferring one same data to a plural number of clients at a time, the server must cope with a plural number of requests from the respective clients constituting the multicast.
This means an increased load for the server and the network and, therefore, said method cannot be directly applied to a multicast transfer system.
For that reason, the present invention is realized in a way to issue, in correspondence to the state of vacancy of the receiving buffer of a specific client 41a belonging to the same multicast group, a request for change of rate from that specific client 41a to said server 400, and change the send rate of said server 400 based on that request for change of rate.
To be concrete, a rate change requesting means 413 is provided on a specific client 41a belonging to the same multicast group, to monitor the vacant capacity of said receiving buffer 412, and to make a request for change of rate corresponding to the vacant capacity to said server.
On the other hand, a rate change controlling means 406 is provided on the server 400, to renew the send rate set on said rate controlling means 405, in correspondence to said request for change of rate.
This makes it possible to avoid overflow of multicast stream data at the receiving buffers of the clients, while controlling increase of load on the server 400 and the network 300.
Still more, the present invention can also be realized in a way to issue, in correspondence to the loss of stream data received by the packet receiving means 410 of a specific client 41a belonging to said one same multicast group, a request for re-transfer from that specific client 41a to said server 400, and send out data corresponding to the lost data concerned from the storing means of said server 400.
To be concrete, the present invention will be constructed by providing a re-transfer requesting means 414 on a specific client 41a belonging to said one same multicast group, and providing a re-transfer controlling means 407 on said server 400. In this construction, it is so arranged that said re-transfer requesting means 414 monitors loss of the data received by said packet receiving means 410, and makes a request for re-transfer of the data corresponding to the lost data concerned to said server 400, while said re-transfer controlling means 407 makes a re-transfer of the stream data corresponding to said lost data, based on said request for re-transfer.
This makes it possible to compensate for the loss even in case of occurrence of any data loss, while controlling increase of load on the server and the network.
Yet more, it is so arranged that said specific client 41a issues said request for change of rate to said server 400 and all clients belonging to said one same multicast group. In this state, issuance of request for change of rate issued by other specific client by other specific client identical to the request for change of rate issued by said specific client is prohibited for a prescribed time set in advance. Or in the case where said server received one same request for change of rate from a plural number of clients within a prescribed time set in advance, it is possible to validate one of those requests for change of rate, and change the send rate of the server based on that request for change of rate.
To be concrete, said specific client 41a is provided, as shown in FIG. 9, with a rate change request inhibiting means 415 for inhibiting issuance of request for change of rate identical to the request for change of rate issued by other specific client for a prescribed time. Or, as shown in FIG. 10, said server 400 comprises the same rate change request processing means 408 for determining, in the case where the server 400 received one same said request for change of rate from a plural number of clients within a prescribed time set in advance, one of those requests for change of rate as valid.
Moreover, it is possible to issue said request for re-transfer from said specific client 41a to said server 400 and to all clients belonging to said one same multicast group, and inhibit issuance of request for re-transfer identical to said request for re-transfer from other specific client for a prescribed time set in advance. Or, it is possible to determine, in the case where said server 400 received one same said request for re-transfer from a plural number of clients within a prescribed time set in advance, one of those requests for re-transfer as valid, and send out data corresponding to the lost data from the storing means of said server 400.
To be concrete, said specific client 41a is provided, as shown in FIG. 9, with a re-transfer request inhibiting means 416 for inhibiting issuance of request for re-transfer identical to the request for re-transfer issued by other specific client for a prescribed time. Or, as shown in FIG. 10, said server 400 is constructed by comprising a one same re-transfer request processing means 409 for determining, in the case where the server 400 received one same said request for re-transfer from a plural number of clients within a prescribed time set in advance, one of those requests for re-transfer as valid.
By said procedure, it becomes possible to restrict the load on said server 400 and network 300.
Furthermore, before transmission of stream data said server 400 determines whether one client can coexiste with the other clients included in the same group or not after obtaining conditions to issue a request for changning of rate from each client. When the server 400 determines that the client cannot coexist in one same multicast group, it is possible for the server 400 to transfer the data to the client by other multicast group. Or when client has conditions with difficulty of coexistence in one same multicast group it is also possible for said specific client to receive the data as other multicast group.
To be concrete, said server 400 is provided, as shown in FIG. 11, with a transmission destination group split controlling means 418, to control in a way to transfer the data by other multicast group to said client having conditions with difficulty of coexistence in one same multicast group. In addition, said specific client is provided, as shown in FIG. 12, with a group split controlling means 419, to receive the data by other multicast group, in the case where that specific client has conditions with difficulty of coexistence in one same multicast group.
For that reason, clients having conditions enabling coexistence are made to belong to one same multicast group, to distribute stream data under separate multicast addresses to the respective multicast groups. Therefore, it becomes possible to improve the reliability of data transfer to a larger number of clients.